perm filename SCAN.OLD[LSP,LSP] blob sn#048953 filedate 1973-07-03 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	TITLE SCAN -- GENERAL PURPOSE ADAPTER FOR LISP SCANNER
C00004 00003	
C00006 ENDMK
CāŠ—;
TITLE SCAN -- GENERAL PURPOSE ADAPTER FOR LISP SCANNER

A=1
B=2
C=3
R=13
T=6
P=14

CR=15
LF=12
TAB=11

IGCRLF=32
INUM0=577777

EXTERNAL CHRTAB,IGSTRT,RATOM,OLDCH,FIX1A,NOINFG,SCNVAL

INTERNAL SCAN,UNTYI,SCANSET,SCANRESET,SCANINIT,LETTER,IGNORE

SCAN:	SETOM NOINFG
	PUSHJ P,RATOM
	SKIPA
	PUSHJ P,FIX1A
	MOVEM A,SCNVAL
	MOVEI A,INUM0(R)
	POPJ P,

UNTYI:	SUBI A,INUM0
	MOVEM A,OLDCH
	JRST FIX1A

OLDSCN:	IGCRLF	;IGSTRT
	LF	;IGEND
	POINT 4,CHRTAB(A),5	;RATFLD
	POINT 2,CHRTAB(A),10	;STRFLD
	POINT 3,CHRTAB(A),13	;IDFLD

IGST2:	0	;IGSTRT
IGEND2:	0	;IGEND
RATF2:	POINT 4,CHRTAB(A),29	;RATFLD
STRF2:	POINT 2,CHRTAB(A),31	;STRFLD
IDF2:	POINT 3,CHRTAB(A),34	;IDFLD

SCANSET:	SKIPA A,[XWD IGST2,IGSTRT]
SCANRESET:	MOVE A,[XWD OLDSCN,IGSTRT]
	BLT A,IGSTRT+4
FALSE:	MOVEI A,0
	POPJ P,

SCANINIT:	SUBI A,INUM0
	SUBI B,INUM0
	SUBI C,INUM0
	SUBI C+1,INUM0
	SUBI C+2,INUM0
	MOVEM A,IGST2	;IGSTRT
	MOVEM B,IGEND2	;IGEND
	PUSH P,C	;STRBEG
	PUSH P,C+1	;STREND
	PUSH P,C+2	;SLASHIFY
	MOVEI B,2
	MOVEI C,3
	MOVEI A,176
	DPB B,RATF2
	DPB C,STRF2
	DPB B,IDF2
	SOJG A,.-3
	MOVE A,[XWD "A"-"Z"-1,"A"]
	MOVEI B,5
	MOVEI C,4
	DPB B,RATF2
	DPB C,IDF2
	AOBJN A,.-2
	MOVE A,[XWD "a"-"z"-1,"a"]
	DPB B,RATF2
	DPB C,IDF2
	AOBJN A,.-2
	MOVE A,[XWD "0"-"9"-1,"0"]
	MOVEI B,8
	DPB B,RATF2
	DPB C,IDF2
	AOBJN A,.-2
	POP P,A	;SLASHIFY
	MOVEI B,3
	DPB B,IDF2
	DPB C,RATF2
	POP P,A	;STREND
	MOVEI B,2
	DPB B,STRF2
	POP P,A	;STRBEG
	MOVEI B,9
	DPB B,RATF2
	MOVE A,IGST2
	MOVEI B,0
	DPB B,RATF2
	DPB B,STRF2
	DPB B,IDF2
	MOVEI B,1
	MOVEI A,0	;NULL
	DPB B,RATF2
	DPB B,IDF2
	DPB B,STRF2
	MOVEI A,"."
	MOVEI B,7
	DPB B,RATF2
	JRST FALSE

LETTER:	SUBI A,INUM0
	MOVEI B,5
	MOVEI C,4
	DPB C,IDF2
LET2:	DPB B,RATF2
	JRST FALSE

IGNORE:	SUBI A,INUM0
	MOVEI B,3
	JRST LET2

END